package collection;

import java.util.*;

/**
 * lambda表达式
 * JDK8之后推出的一个新特性
 * lambda旨在可以“面向函数式编程”
 * 用更精简的语法创建匿名内部类，在前端开发中通常称他为“箭头函数”
 * 语法：
 * （参数列表）->{
 *     方法体
 * }
 *当接口中只有一个抽象方法时，才可以使用lambda表达式创建
 */
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类形式创建比较器
        Comparator<String> c = new Comparator<String>() {
            public int compare(String o1, String o2) {
                int len1 = o1.length();
                int len2 = o2.length();
                return len1 - len2;
            }
        };
        //lambda表达式写法
        Comparator<String> c1=(String o1, String o2)->{
                return o1.length()-o2.length();
            };
        //lambda表达式中参数的类型可以忽略不写
        Comparator<String> c2=(o1, o2)->{
            return o1.length()-o2.length();
        };
        //lambda表达式中如果方法体只有一句代码，大括号可以不写，并且如果含有return关键字时也一同忽略
        Comparator<String> c3=(o1, o2)->o1.length()-o2.length();

        List<String> list=new ArrayList<>();
        list.add("张晓佳");
        list.add("罗帅斌");
        list.add("张鹏");
        //终极应用，程序员应该写出来的优雅代码
        Collections.sort(list,(o1, o2)->o1.length()-o2.length());


        }
    }

